#include "envioarquivo.h"
#include <QStringList>
#include <QFile>
#include "tela.h"

EnvioArquivo::EnvioArquivo(QTcpSocket* socket)
{
    this->socket = socket;
    connect (this->socket, SIGNAL(readyRead()), this, SLOT(lerDados()));
}

void EnvioArquivo::lerDados()
{
    //definicao do pacote de pedido de envio #nome_arquivo#inicio#quantidade#
    QByteArray dados;
    dados = this->socket->readAll();
    QList<QByteArray> dados_pacote = dados.split('#');
    dados_pacote.removeFirst();
    dados_pacote.removeLast();

    qint64 dado_1 = dados_pacote.at(1).toULongLong();
    qint64 dado_2 = dados_pacote.at(2).toULongLong();

    this->enviarPedacoArquivo(QString(dados_pacote.at(0)), dado_1, dado_2);
}

void EnvioArquivo::enviarPedacoArquivo(QString nome_arquivo, qint64 inicio_pedaco, qint64 quantidade_bytes)
{
    QByteArray dados;
    QFile file(Tela::pasta_inicial + nome_arquivo);
    file.open(QIODevice::ReadOnly);
    dados = file.readAll();
    QByteArray dados2 = dados.mid(inicio_pedaco, quantidade_bytes);
    dados2.append(QByteArray("#fim#"));
    file.close();
    this->socket->write(dados2);
}
